/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Persistencia;

import java.sql.*;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import negocio.Comentario;
import negocio.Paginacion;
import negocio.Usuario;

/**
 *
 * @author JAVA
 */
public class PersistenciaComentario {

    public static int guardarComentario(Comentario com) {
        int i = 0;
        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String fecha = sdf.format(com.getFecha());
        try {
            Conexion conexion=new Conexion();
            i = conexion.open().executeUpdate("insert into comentario (id,idusuario,contenido,fecha) values (0," + com.getUsuario().getId() + ",'" + com.getTexto() + "','" + fecha + "')");
            conexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }


    }

    public static ArrayList<Comentario> obtenerComentarios(Usuario u) {
        ArrayList<Comentario> comentarios = new ArrayList<Comentario>();
        try {
            Conexion conexion=new Conexion();
            ResultSet r = conexion.open().executeQuery("select id,idusuario,contenido,fecha from comentario where comentario.idusuario=" + u.getId() + " order by fecha desc");
            while (r.next()) {                
                
                Comentario com = new Comentario(r.getInt("id"), u, r.getString("contenido"),r.getDate("fecha") );
                comentarios.add(com);
            }
            conexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return comentarios;
        }

    }

    public static int numeroComentarios(Usuario u) {
        int i = 0;
        try {
            Conexion conexion=new Conexion();
            ResultSet r = conexion.open().executeQuery("select count(*) as numero from comentario inner join amigos "
                    + "on amigos.idUsuarioSeguido=comentario.idusuario and amigos.idUsuario=" + u.getId() + " order by fecha desc ");
            while (r.next()) {
                i = r.getInt("numero");
            }
            conexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }

    }

    public static ArrayList<Comentario> obtenerNotificaciones(Usuario u) {
        ArrayList<Comentario> comentarios = new ArrayList<Comentario>();
        try {
            Conexion conexion=new Conexion();
            ResultSet r = conexion.open().executeQuery("select comentario.id id,comentario.idusuario idusuario,contenido,fecha from comentario inner join amigos "
                    + "on amigos.idUsuarioSeguido=comentario.idusuario and amigos.idUsuario=" + u.getId() + " order by fecha desc ");
            while (r.next()) {
                Usuario user = PersistenciaUsuario.obtenerUsuario(r.getInt("idusuario"));
                Comentario com = new Comentario(r.getInt("id"), user, r.getString("contenido"), r.getDate("fecha"));
                comentarios.add(com);
            }
            conexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return comentarios;
        }

    }

    public static ArrayList<Comentario> obtenerNotificacionesPaginadas(Usuario u, Paginacion p) {
        ArrayList<Comentario> comentarios = new ArrayList<Comentario>();
        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Conexion conexion=new Conexion();
            ResultSet r = conexion.open().executeQuery("select comentario.id id,comentario.idusuario idusuario,contenido,fecha from comentario inner join amigos "
                    + "on amigos.idUsuarioSeguido=comentario.idusuario and amigos.idUsuario=" + u.getId() + " order by fecha desc limit " + p.getRegistrosPagina() + " offset " + p.offset() + "");
            while (r.next()) {
                Usuario user = PersistenciaUsuario.obtenerUsuario(r.getInt("idusuario"));
                 
                Comentario com = new Comentario(r.getInt("id"), user, r.getString("contenido"), sdf.parse(r.getString("fecha")));
                comentarios.add(com);
            }
            conexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return comentarios;
        }

    }
}
